package com.hlf.modules.api.mapper;

import java.util.List;

import com.hlf.modules.base.mapper.BaseMapper;
import com.hlf.common.page.Page;
import com.hlf.modules.api.entity.Checkcode;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * 验证码数据持久层接口
 * 
 * 
 * @author shuliangxing
 *
 */
@Mapper
public interface CheckcodeMapper extends BaseMapper<Checkcode> {
    /**
     * 根据id删除
     *
     * @param codId
     * @return
     */
    int deleteByPrimaryKey(Integer codId);
    /**
     * 新增
     *
     * @param record
     * @return
     */
    int insert(Checkcode record);

    /**
     * 非空字段新增
     *
     * @param record
     * @return
     */
    int insertSelective(Checkcode record);
    /**
     * 根据id查询
     *
     * @param codId
     * @return
     */
    Checkcode selectByPrimaryKey(Integer codId);

    /**
     * 根据id更新非空字段
     *
     * @param record
     * @return
     */
    int updateByPrimaryKeySelective(Checkcode record);

    /**
     * 根据id更新
     *
     * @param record
     * @return
     */
    int updateByPrimaryKey(Checkcode record);

    // 分割线

    /**
     * 根据条件查询
     *
     * @return
     */
    List<Checkcode> select(Checkcode record);

    /**
     * 分页查询
     *
     * @param entity
     * @param page
     * @return
     */
    List<Checkcode> selectForPage(@Param(value = "e") Checkcode entity,
                                  @Param(value = "p") Page page);

    /**
     * 查询总记录数
     *
     * @param entity
     * @param page
     * @return
     */
    int selectForPageCount(@Param(value = "e") Checkcode entity,
                           @Param(value = "p") Page page);

    /**
     * 查询最新的验证码
     *
     *            手机号码

     *            验证码

     *            类型，0=注册，1=密码找回
     * @return
     */
    Checkcode findNearestCode(@Param(value = "codMobile") String codMobile,
                              @Param(value = "codCode") String codCode,
                              @Param(value = "codType") int codType);

    /**
     * 当前操作获取验证码时，查询当前时间与上一次请求的验证码时间差
     * @param mobile
     * @return 时间差，单位：秒
     * @author zouwenjun
     * @date 2017年5月25日 下午3:10:17
     */
    Integer getDifftimeByNow(String mobile);

    /**
     * 当前操作获取验证码时，查询当前时间到前hoursNum小时是否有超过短信平台限制的条数
     * @param mobile
     * @param limitCount
     * @return
     * @author zouwenjun
     * @date 2017年6月8日 下午4:24:39
     */
    Long getCodIdByNowAndLimitCount(@Param(value = "mobile") String mobile,
                                    @Param(value = "limitCount") Integer limitCount,
                                    @Param(value = "hoursNum") Integer hoursNum);

}